home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / OOmodules / list / associativeArray / ar.e next >
Encoding:
Text File  |  1995-12-24  |  3.8 KB  |  148 lines

  1. /*
  2.  * ar.e - yer very basic test suite to make sure numbers go in the right place
  3.  * when inserted/removed in various orders.
  4.  *
  5.  * December 24 1995 Gregor Goldbach
  6.  *   This is the original test program by Barry with these exceptions: I removed
  7.  *   the initial size argument from new() and added NEW end END to each test.
  8.  *
  9.  */
  10.  
  11. OPT REG=5,
  12.     PREPROCESS
  13.  
  14. MODULE 'oomodules/list/associativeArray'
  15.  
  16. #define TEST1
  17. #define TEST2
  18. #define TEST3
  19. #define TEST4
  20. #define TEST5
  21. #define TEST6
  22. #define TEST7
  23. #define TEST8
  24.  
  25. OBJECT aa OF associativeArray
  26. ENDOBJECT
  27.  
  28. PROC printAll() OF aa
  29.   DEF i, last
  30.   last:=self.tail-1
  31.   FOR i:=0 TO last DO self.print(i)
  32.   WriteF('\n')
  33. ENDPROC
  34.   /* printAll */
  35.  
  36. PROC print(i) OF aa
  37.   WriteF('key\d=\d val\d=$\h\n', i, self.key[i], i, self.val[i])
  38. ENDPROC
  39.   /* print */
  40.  
  41. PROC main() HANDLE
  42.   DEF ar:PTR TO aa, i
  43.   NEW ar.new()
  44. /*---------------------------------------------------------------------------*/
  45. /*--- test order of insert --------------------------------------------------*/
  46. /*---------------------------------------------------------------------------*/
  47. #ifdef TEST1
  48.   WriteF('/*** TEST 1 ***/\n')
  49.   ar.set(1, $1111); ar.printAll()
  50.   ar.set(2, $2222); ar.printAll()
  51.   ar.set(3, $3333); ar.printAll()
  52.   ar.set(4, $4444); ar.printAll()
  53.   ar.set(5, $5555); ar.printAll()
  54.   END ar
  55. #endif
  56. #ifdef TEST2
  57.   NEW ar.new()
  58.   WriteF('/*** TEST 2 ***/\n')
  59.   ar.set(5, $5555); ar.printAll()
  60.   ar.set(4, $4444); ar.printAll()
  61.   ar.set(3, $3333); ar.printAll()
  62.   ar.set(2, $2222); ar.printAll()
  63.   ar.set(1, $1111); ar.printAll()
  64.   END ar
  65. #endif
  66. #ifdef TEST3
  67.   NEW ar.new()
  68.   WriteF('/*** TEST 3 ***/\n')
  69.   ar.set(5, $5555); ar.printAll()
  70.   ar.set(1, $1111); ar.printAll()
  71.   ar.set(4, $4444); ar.printAll()
  72.   ar.set(2, $2222); ar.printAll()
  73.   ar.set(3, $3333); ar.printAll()
  74.   END ar
  75.  
  76. #endif
  77. #ifdef TEST4
  78.   NEW ar.new()
  79.   WriteF('/*** TEST 4 ***/\n')
  80.   ar.set(3, $3333); ar.printAll()
  81.   ar.set(4, $4444); ar.printAll()
  82.   ar.set(2, $2222); ar.printAll()
  83.   ar.set(5, $5555); ar.printAll()
  84.   ar.set(1, $1111); ar.printAll()
  85.   END ar
  86. #endif
  87. #ifdef TEST5
  88.   NEW ar.new()
  89.   WriteF('/*** TEST 5 ***/\n')
  90.   ar.set(1, $1111); ar.printAll()
  91.   ar.set(5, $5555); ar.printAll()
  92.   ar.set(3, $3333); ar.printAll()
  93.   ar.set(2, $2222); ar.printAll()
  94.   ar.set(4, $4444); ar.printAll()
  95.   END ar
  96. #endif
  97.  
  98. /*---------------------------------------------------------------------------*/
  99. /*--- test overwrite --------------------------------------------------------*/
  100. /*---------------------------------------------------------------------------*/
  101. #ifdef TEST6
  102.   NEW ar.new()
  103.   WriteF('/*** TEST 6 ***/\n')
  104.   ar.set(1, $1111); ar.printAll()
  105.   ar.set(5, $5555); ar.printAll()
  106.   ar.set(3, $3333); ar.printAll()
  107.   ar.set(4, $4444); ar.printAll()
  108.   ar.set(2, $2222); ar.printAll()
  109.  
  110.   ar.set(1, $5555); ar.printAll()
  111.   ar.set(2, $4444); ar.printAll()
  112.   ar.set(3, $3333); ar.printAll()
  113.   ar.set(4, $2222); ar.printAll()
  114.   ar.set(5, $1111); ar.printAll()
  115.   END ar
  116. #endif
  117. /*---------------------------------------------------------------------------*/
  118. /*--- test get() and remove() -----------------------------------------------*/
  119. /*---------------------------------------------------------------------------*/
  120. #ifdef TEST7
  121.   NEW ar.new()
  122.   WriteF('/*** TEST 7 ***/\n')
  123.   ar.set(3, $3333); ar.printAll()
  124.   ar.set(2, $2222); ar.printAll()
  125.   ar.set(4, $4444); ar.printAll()
  126.   ar.set(1, $1111); ar.printAll()
  127.   ar.set(5, $5555); ar.printAll()
  128.  
  129.   FOR i:=1 TO 5 DO WriteF('get(\d)=$\h\n', i, ar.get(i))
  130.   WriteF('\n')
  131.  
  132.   ar.remove(3); ar.printAll()
  133.   ar.remove(1); ar.printAll()
  134.   ar.remove(5); ar.printAll()
  135.   ar.remove(4); ar.printAll()
  136.   ar.remove(2); ar.printAll()
  137.   END ar
  138. #endif
  139. #ifdef TEST8
  140.   NEW ar.new()
  141.   WriteF('/*** TEST 8 (should raise exception) ***/\n')
  142.   ar.remove("blah") ->should raise exception
  143. #endif
  144. EXCEPT DO
  145.   IF exception THEN WriteF('BOOM!\n')
  146.   CleanUp()
  147. ENDPROC
  148.